package org.abettor.angleworm.media;

import java.io.IOException;
import java.util.Properties;

/**
 * <p>媒体传输程序工厂接口，负责根据一定的规则，创建能够完成媒体传输功能的程序实例。</p>
 * <p><b>本接口的所有实现类，必须使用静态方法，调用MediaTransmitterManager的register方法，对自己进行注册。</b></p>
 * <p>例：</p>
 * <p><pre>
 * public class MyFactory implements org.abettor.angleworm.media.MediaTransmitterFactory
 * {
 *     ......
 *     static
 *     {
 *         org.abettor.angleworm.media.MediaTransmitterManager.register(new MyFactory());
 *     }
 *     ......
 * }
 * </pre></p>
 * @author shawn
 * @see org.abettor.angleworm.media.MediaTransmitterManager
 *
 */
public interface MediaTransmitterFactory
{
	/**
	 * 检查是否支持targetUrl所指定的传输目标
	 * @param targetUrl
	 */
	public boolean support(String targetUrl);

	/**
	 * 创建能够完成到targetUrl所指定传输目标的媒体传输功能的程序实例
	 * @param targetUrl
	 * @param properties
	 * @throws IOException
	 */
	public MediaTransmitter createTransmitter(String targetUrl, Properties properties) throws IOException;
}
